package com.health.utils;

import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * MD5加密
 */
public class MD5Util {

    /**
     * 将指定字符串使用MD5算法加密
     *
     * @param plaintext 明文
     * @return 密文
     */
    public static String encode(String plaintext) {
        //定义一个字节数组
        byte[] secretBytes = null;
        try {
            // 生成一个MD5加密计算摘要
            MessageDigest md = MessageDigest.getInstance("MD5");
            //对字符串进行加密
            md.update(plaintext.getBytes());
            //获得加密后的数据
            secretBytes = md.digest();

            //将加密后的数据转换为16进制数字
            return new BigInteger(1, secretBytes).toString(16);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 匹配明文与密文
     *
     * @param plaintext  明文
     * @param ciphertext 密文
     * @return 匹配结果
     */
    public static boolean matches(String plaintext, String ciphertext) {
        //将明文加密后比较
        return encode(plaintext).equals(ciphertext);
    }
}